<?php
namespace app\logic;

class Config extends Base
{
    protected function initialize()
    {
        parent::initialize();
        $this->model = new \app\model\Config();
    }

    /**
     * 更新配置
     * @param $param
     * @return array
     */
    public function saveConfig($param)
    {
        // 调整数据格式
        $key = $param['config_key'];
        unset($param['config_key']);
        $value = $param;

        // 配置描述名称
        $array = [
            'site'      => "网站配置",
            'upload'    => "上传配置",
            'software'  => "软件配置",
        ];
        
        // 查询数据/更新数据/不存在返回空模型便于新增数据
        $config = $this->model::where('key', $key)->findOrEmpty();
        $config->key = $key;
        $config->value = $value;
        $config->setAttr('name', $array[$key] ?? ""); // 配置描述名称
        $result = $config->save();

        if($result) {
            return [config('status.success'), "更新成功"];
        }
        return [config('status.fail'), "更新失败"];
    }

    /**
     * 获取所有配置
     * @return mixed
     */
    public function getConfigAll()
    {
        $config_all = $this->model::field('name,key,value')->select()->toArray();
        $result = [];
        // 调整数据格式
        foreach ($config_all as $config) {
            $value = $config['value'];
            $value['name'] = $config['name'];
            $result[$config['key']] = $value;
        }
        return $result;
    }

    /**
     * 获取指定配置
     * 不指定 value 获取 key 下面的所有配置参数
     * @param string $key key 字段
     * @param string $value 配置键名
     * @return bool|array
     */
    public function getConfig($key, $value = "") {
        if(empty($key)) {
            return false;
        }
        $config = $this->model::where('key', $key)->findOrEmpty()->toArray();
        return !empty($value) ? ($config['value'][$value] ?? "") : ($config['value'] ?? []);
    }

}